﻿using CatUtils.Utils.Currency;
using CatUtils.Utils.Currency.IoUtils;
using CatUtils.Utils.Currency.TextUtils;
using System;
using System.Windows.Forms;

namespace CatUtils.Utils.SpecialUtils.View
{
    /// <summary>
    /// 警告提醒弹窗的辅助方法
    /// </summary>
    public class MessageHelper
    {
        /// <summary>
        /// 弹出警告框
        /// </summary>
        /// <param name="Text"></param>
        public static void Alert(string Text)
        {
            MessageBox.Show(Text);
        }

        /// <summary>
        /// 判断并且警告用户内容为空  为空返回false
        /// </summary>
        /// <param name="Text"></param>
        public static bool AlertNull(string Text)
        {
            if (TextHelper.JudgeNull(Text))
            {
                MessageBox.Show("内容不能为空");
                return false;
            }
            return true;
        }

        /// <summary>
        /// 确定取消 按钮，返回结果
        /// </summary>
        /// <param name="Tip"></param>
        /// <returns></returns>
        public static bool DialogResultAlert(string Tip)
        {
            DialogResult DialogShow = MessageBox.Show(Tip, "提示", MessageBoxButtons.OKCancel);
            if (DialogShow == DialogResult.OK)
            {
                return true;
            }
            else if (DialogShow == DialogResult.Cancel)
            {
                return false;
            }
            return false;
        }

        /// <summary>
        /// 辅助打开文件，任务完成的提示
        /// </summary>
        /// <param name="FloderPath"></param>
        /// <param name="Tip"></param>
        public static void OpenFloderAlert(string FloderPath, string Tip = "任务完成，是否打开路径？")
        {
            if (DialogResultAlert(Tip))
            {
                FloderHelper.OpenFloder(FloderPath);
            }
        }

        /// <summary>
        /// 有三种状态的用户选择功能 返回Yes No Cancel
        /// </summary>
        /// <param name="Tip">提示框里的内容</param>
        /// <param name="YesTip">Yes按钮文字，不超过中文5字，否则显示不全</param>
        /// <param name="NoTip">No按钮文字，不超过中文5字，否则显示不全</param>
        /// <param name="CancleTip">Cancle按钮文字，不超过中文5字，否则显示不全</param>
        /// <param name="AppTip">主界面，最顶部半透明位置的提示框。</param>
        /// <returns></returns>
        public static DialogResult DialogYesNoCancle(string Tip, string YesTip, string NoTip, string CancleTip, string AppTip = "")
        {
            try
            {
                using (UserDialog dialog = new UserDialog(Tip, YesTip, NoTip, CancleTip, AppTip))
                {
                    return dialog.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                PrintLog.E(ex);
            }
            return DialogResult.None;
        }

        /// <summary>
        /// 有三种状态的用户选择功能 返回Yes No Cancel
        /// </summary>
        /// <param name="Tip">提示框里的内容</param>
        /// <param name="YesTip">Yes按钮文字，不超过中文5字，否则显示不全</param>
        /// <param name="NoTip">No按钮文字，不超过中文5字，否则显示不全</param>
        /// <param name="CancleTip">Cancle按钮文字，不超过中文5字，否则显示不全</param>
        /// <param name="AppTip">主界面，最顶部半透明位置的提示框。</param>
        /// <returns></returns>
        public static DialogResult DialogYesNoCancle(string Tip, string YesTip, string NoTip, string CancleTip, int CloseSecond, DialogResult dialogResult, string AppTip = "")
        {
            try
            {
                using (UserDialog dialog = new UserDialog(Tip, YesTip, NoTip, CancleTip, CloseSecond, dialogResult, AppTip))
                {
                    return dialog.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                PrintLog.E(ex);
            }
            return DialogResult.None;
        }
    }
}